const util = require('../../utils/util.js')
const dao = require('../../data/dao.js')

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		action: null,
		name: null,
		totp_secret_name: "测试",
		totp_secret_value: null,
		totp_secret_ttl: 90,
	},
	totp_secret_value_from_random: function () {
		console.log("生成otp秘钥，随机方式");
		let t = dao.make_totp_secret();
		this.setData({
			totp_secret_value: t
		});
	},
	totp_secret_value_from_qrcode: function () {
		console.log("生成otp秘钥，扫码方式");
		let that = this;
		wx.scanCode({
			success: function(res) {
				var t = res.result;
				if (!t)
					return;
				if (t.length > 64)
					t = t.substring(0, 64);
				that.setData({
					totp_secret_value: t
				});
			}
		})
	},
	totp_secret_save: function () {
		console.log("保存otp秘钥");
		util.MyLog.log("保存口令: " + this.data.totp_secret_name);
		if (!this.data.totp_secret_name) {
			wx.showToast({
				title: "名称不能为空！",
				icon: 'none',
			});
			return;
		}
		if (this.data.action === 'edit') {
			if (this.data.name != this.data.totp_secret_name) {
				if (dao.totp_config.getSecret(this.data.totp_secret_name) != null) {
					wx.showToast({
						title: "名称已存在！",
						icon: 'none',
					});
					return;
				}
			}
			{
				dao.totp_config.updateSecret(this.data.name,
					this.data.totp_secret_name,
					this.data.totp_secret_value,
					this.data.totp_secret_ttl
					);
				dao.totp_config.saveConfig();
				//this.onShow();
				wx.showToast({
					title: "保存成功！",
				});
				wx.navigateBack({
					delta: 2
				})
			}
		} else if (this.data.action === 'create') {
			if (dao.totp_config.getSecret(this.data.totp_secret_name) != null) {
				wx.showToast({
					title: "名称已存在！",
					icon: 'none',
				});
				return;
			}
			if (!this.data.totp_secret_value) {
				wx.showToast({
					title: "秘钥不能为空！",
					icon: 'none',
				});
				return;
			}
			{
				dao.totp_config.setSecret(this.data.totp_secret_name,
					this.data.totp_secret_value,
					this.data.totp_secret_ttl);
				dao.totp_config.saveConfig();
				//this.onShow();
				wx.showToast({
					title: "保存成功！",
				});
				wx.navigateBack({
					delta: 2
				})
			}
		}
	},
	totp_secret_delete: function () {
		var name = this.data.name;
		if (name) {
			util.MyLog.log("删除口令: " + name);
			var ret = dao.totp_config.deleteSecret(name);
			dao.totp_config.saveConfig();
			if (ret > 0) {
				//this.onShow();
				wx.showToast({
					title: "删除成功！",
				});
				wx.navigateBack({
					delta: 2
				})
			}
		}
	},

	bind_totp_secret_name(event) {
		var t = event.detail.value;
		//console.log("绑定totp_secret_name", t);
		if (t.length > 16)
			t = t.substring(0, 16);
		this.setData({
			totp_secret_name: t
		});
	},
	bind_totp_secret_value(event) {
		var t = event.detail.value;
		//console.log("绑定totp_secret_value", t);
		if (t.length > 64)
			t = t.substring(0, 64);
		this.setData({
			totp_secret_value: t
		});
	},
	bind_totp_secret_ttl(event) {
		var t = event.detail.value;
		//console.log("绑定totp_secret_ttl", t);
		t = parseInt(t);
		if (t < 1 || t > 366)
			t = 90;
		this.setData({
			totp_secret_ttl: t
		});
	},
	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {
		var action = options.action;
		var name = options.name || "";
		if (action === 'edit') {
			wx.setNavigationBarTitle({
				title: '编辑口令'
			});
			name = decodeURIComponent(name);
			var config = dao.totp_config.getSecret(name);
			//console.log(config);
			this.setData({
				action: action,
				name: name,
				totp_secret_name: name,
				totp_secret_value: config.secret,
				totp_secret_ttl: config.ttl,
			});
		} else if (action === 'create') {
			wx.setNavigationBarTitle({
				title: '新建口令'
			});
			this.setData({
				action: action,
			});
		}
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {
		return {
			title: '动态口令',
			path: '/pages/index/index',
			imageUrl: '/image/share.png', // 使用专门的分享图片，默认截图会截取用户的口令
		}
	}
})